As computing technology has advanced, designers have continuously found new ways to improve the performance of computing devices. This has resulted in computing devices that run faster, run with reduced power consumption, have smaller form factors, and so forth. While such improvements are beneficial to users, they are not without their problems. One such problem is that it can be difficult to design computing devices that provide the desired functionality while at the same time operate in a secure manner, protecting the computing devices from attack by malicious users or programs. Failure to provide such protections can lead to poor performance of the computing devices and/or leave the computing devices vulnerable to attack by malicious users or programs, resulting in user dissatisfaction with their devices.